GridFS MongoDB এর একটি বিশেষ বৈশিষ্ট্য, যা বড় সাইজের ফাইল স্টোর এবং ম্যানেজ করার জন্য ডিজাইন করা হয়েছে। MongoDB এর সাধারণ ডকুমেন্ট সিস্টেম সীমিত আকারের ডেটা সঞ্চয়ের জন্য উপযুক্ত, তবে যখন খুব বড় ফাইল (যেমন ভিডিও, ছবি, অডিও ফাইল ইত্যাদি) সংরক্ষণ করতে হয়, তখন GridFS ব্যবহৃত হয়। GridFS ফাইলগুলোকে ছোট ছোট ব্লক বা চাঙ্কে ভাগ করে MongoDB ডেটাবেসে সংরক্ষণ করে, যা বড় ফাইলগুলোকে ডেটাবেসে সহজে ম্যানেজ করতে সাহায্য করে।
GridFS এর কার্যপ্রণালী
GridFS ফাইলগুলোকে দুটি প্রধান অংশে বিভক্ত করে সংরক্ষণ করে:
১. ফাইল মেটাডেটা
ফাইলের মৌলিক তথ্য, যেমন ফাইলের নাম, আকার, মimetype ইত্যাদি, একটি আলাদা ডকুমেন্ট হিসেবে MongoDB ডেটাবেসে সংরক্ষিত থাকে।
২. ফাইল ডেটা ব্লক (Chunks)
ফাইলের আসল কনটেন্ট MongoDB ডেটাবেসে ছোট ছোট ব্লকে (চাঙ্ক) ভাগ করা হয়। প্রতিটি চাঙ্ক একটি BSON ডকুমেন্ট হিসেবে সংরক্ষিত হয়, এবং এই চাঙ্কগুলি পরস্পর সম্পর্কিত হয়।
ফাইলটি যখন GridFS এর মাধ্যমে সংরক্ষিত হয়, তখন MongoDB দুটি আলাদা কন্টেইনার ব্যবহার করে:
- fs.files: ফাইলের মেটাডেটা সংরক্ষণ করা হয়।
- fs.chunks: ফাইলের ডেটা (ব্লক) সংরক্ষণ করা হয়।
Java MongoDB GridFS ব্যবহার
Java MongoDB ড্রাইভার ব্যবহার করে GridFS এর মাধ্যমে বড় সাইজের ফাইল সংরক্ষণ ও পড়া যায়। MongoDB Java Driver এর GridFS API ব্যবহার করে ফাইল আপলোড ও ডাউনলোড করা যায়।
GridFS সেটআপ
GridFS ব্যবহার করার জন্য প্রথমে MongoDB ডাটাবেসের সাথে সংযোগ স্থাপন করতে হবে এবং GridFS API ব্যবহার করতে হবে।
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.MongoClients;
import org.bson.types.ObjectId;
MongoDatabase database = MongoClients.create("mongodb://localhost:27017").getDatabase("myDatabase");
// GridFSBucket ব্যবহার করে GridFS এর সাথে কাজ করা হয়
GridFSBucket gridFSBucket = GridFSBuckets.create(database);
ফাইল আপলোড (Upload File)
GridFS এর মাধ্যমে একটি ফাইল MongoDB তে আপলোড করার জন্য নিম্নলিখিত কোড ব্যবহার করা হয়:
import com.mongodb.client.gridfs.GridFSUploadOptions;
import java.io.FileInputStream;
import java.io.IOException;
FileInputStream streamToUploadFrom = new FileInputStream("path_to_file");
GridFSUploadOptions options = new GridFSUploadOptions()
.chunkSizeBytes(1024); // চাঙ্ক সাইজ নির্ধারণ
ObjectId fileId = gridFSBucket.uploadFromStream("fileName", streamToUploadFrom, options);
System.out.println("Uploaded file with ID: " + fileId);
এখানে, "fileName" হল ফাইলের নাম, এবং chunkSizeBytes হল চাঙ্ক সাইজ যা ফাইলকে ছোট ছোট অংশে ভাগ করে সংরক্ষণ করবে।
ফাইল ডাউনলোড (Download File)
MongoDB থেকে ফাইল ডাউনলোড করার জন্য GridFS এর downloadToStream পদ্ধতি ব্যবহার করা হয়:
import java.io.FileOutputStream;
FileOutputStream streamToDownloadTo = new FileOutputStream("downloaded_file");
gridFSBucket.downloadToStream(fileId, streamToDownloadTo);
System.out.println("Downloaded file with ID: " + fileId);
এখানে, fileId হল সেই ফাইলের MongoDB তে সংরক্ষিত ইউনিক আইডি, যা GridFS তে ফাইল আপলোড করার সময় পাওয়া যায়।
GridFS এর সুবিধা
১. বড় সাইজের ফাইল সংরক্ষণ
MongoDB এর সাধারণ ডকুমেন্ট স্টোরেজ সীমিত আকারের জন্য উপযুক্ত, তবে GridFS ব্যবহার করে বড় সাইজের ফাইলও MongoDB তে সংরক্ষণ করা সম্ভব হয়।
২. ফাইলের কার্যকরী ম্যানেজমেন্ট
GridFS ফাইলের মেটাডেটা এবং ব্লক (চাঙ্ক) আলাদাভাবে সংরক্ষণ করে, যা ফাইলের ম্যানেজমেন্ট এবং পুনরুদ্ধার প্রক্রিয়াকে সহজ করে তোলে।
৩. স্কেলেবিলিটি
GridFS MongoDB ডেটাবেসের অন্যান্য ফিচারের মতো স্কেলেবল, তাই বড় সাইজের ফাইলের জন্যও MongoDB ব্যবহার করা সম্ভব।
৪. অ্যাক্সেস সুবিধা
GridFS ব্যবহার করে MongoDB তে সংরক্ষিত ফাইল দ্রুত অ্যাক্সেস করা যায়, এবং বিভিন্ন অ্যাপ্লিকেশনে ফাইল স্টোর এবং ফেচিং সুবিধা প্রদান করে।
GridFS MongoDB তে বড় সাইজের ফাইল সংরক্ষণ এবং ম্যানেজ করার জন্য একটি শক্তিশালী সমাধান। Java MongoDB ড্রাইভার ব্যবহার করে সহজেই GridFS এর মাধ্যমে ফাইল আপলোড ও ডাউনলোড করা সম্ভব। এটি MongoDB এর শক্তিশালী স্টোরেজ সক্ষমতাকে বাড়িয়ে তোলে, বিশেষ করে যখন বড় ডেটা বা মিডিয়া ফাইলের সাথে কাজ করতে হয়।
Read more